namespace = cr_body

# Seeds inherited anatomy variables used by later anatomy and preference
# systems. Characters can carry hidden variables even when the visible trait
# is not appropriate for their body.
character_event = {
	id = cr_body.1
	hide_window = yes
	is_triggered_only = yes

	trigger = {
		NOT = { has_character_flag = cr_breast_size_set }
	}

	immediate = {
		cr_seed_inherited_breast_size_effect = yes
	}
}

character_event = {
	id = cr_body.2
	hide_window = yes
	is_triggered_only = yes

	trigger = {
		cr_needs_breast_size_trait = yes
	}

	immediate = {
		cr_apply_breast_size_trait_effect = yes
	}
}

character_event = {
	id = cr_body.3
	hide_window = yes
	is_triggered_only = yes

	trigger = {
		NOT = { has_character_flag = cr_dick_size_set }
	}

	immediate = {
		cr_seed_inherited_dick_size_effect = yes
	}
}

character_event = {
	id = cr_body.4
	hide_window = yes
	is_triggered_only = yes

	trigger = {
		cr_needs_dick_size_trait = yes
	}

	immediate = {
		cr_apply_dick_size_trait_effect = yes
	}
}

character_event = {
	id = cr_body.5
	hide_window = yes
	is_triggered_only = yes

	trigger = {
		OR = {
			cr_has_invalid_visible_bosom_size_trait = yes
			cr_has_invalid_visible_dick_size_trait = yes
			has_character_modifier = cr_body_appeal_small_bosom
			has_character_modifier = cr_body_appeal_moderate_bosom
			has_character_modifier = cr_body_appeal_full_bosom
			has_character_modifier = cr_body_appeal_ample_bosom
			has_character_modifier = cr_body_appeal_very_large_bosom
			has_character_modifier = cr_body_appeal_small_dick
			has_character_modifier = cr_body_appeal_average_dick
			has_character_modifier = cr_body_appeal_large_dick
			has_character_modifier = cr_body_appeal_exceptional_dick
		}
	}

	immediate = {
		cr_clean_invalid_visible_body_traits_effect = yes
		cr_clear_body_appeal_modifiers_effect = yes
	}
}

# Adults keep one permanent preference flag for each anatomy group. The flags
# are separate from anatomy and receive visible, stat-free icon markers.
character_event = {
	id = cr_body.6
	hide_window = yes
	is_triggered_only = yes

	trigger = { is_adult = yes }

	immediate = {
		cr_assign_body_preference_flags_effect = yes
		cr_sync_body_preference_markers_effect = yes
	}
}

# Refresh directed +5 opinions within relationships where personal attraction
# matters without performing a global all-character cross product.
character_event = {
	id = cr_body.7
	hide_window = yes
	is_triggered_only = yes

	trigger = { is_adult = yes }

	immediate = {
		cr_clear_body_preference_opinions_effect = yes

		any_courtier = {
			limit = {
				is_adult = yes
				NOT = { character = ROOT }
			}
			cr_apply_body_preference_opinion_from_root_effect = yes
		}
		if = {
			limit = {
				independent = no
				liege = { is_adult = yes }
			}
			liege = { cr_apply_body_preference_opinion_from_root_effect = yes }
		}
		any_vassal = {
			limit = { is_adult = yes }
			cr_apply_body_preference_opinion_from_root_effect = yes
		}
		any_spouse = {
			limit = {
				is_adult = yes
				NOT = { character = ROOT }
			}
			cr_apply_body_preference_opinion_from_root_effect = yes
		}
		any_consort = {
			limit = {
				is_adult = yes
				NOT = { character = ROOT }
			}
			cr_apply_body_preference_opinion_from_root_effect = yes
		}
		any_lover = {
			limit = {
				is_adult = yes
				NOT = { character = ROOT }
			}
			cr_apply_body_preference_opinion_from_root_effect = yes
		}
	}
}
